import axios from 'axios';

const apiClient = axios.create({
  baseURL: 'http://localhost:3000/v1', // 假设后端运行在3000端口
  headers: {
    'Content-Type': 'application/json',
  },
});

// 请求拦截器：用于在发送请求前处理，例如添加token
apiClient.interceptors.request.use(
  (config) => {
    const token = localStorage.getItem('user_token'); // 从localStorage获取token
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

// 响应拦截器：用于处理响应数据，例如统一错误处理
apiClient.interceptors.response.use(
  (response) => {
    // 对响应数据做点什么
    return response.data; // 通常我们只需要响应体中的data部分
  },
  (error) => {
    // 对响应错误做点什么
    if (error.response) {
      // 服务器返回了错误状态码
      console.error('API Error:', error.response.status, error.response.data);
      // 可以根据状态码做一些全局处理，例如401未授权跳转到登录页
      if (error.response.status === 401) {
        // localStorage.removeItem('user_token');
        // window.location.href = '/login';
        // 实际项目中会使用Vue Router进行跳转
        console.warn('用户未授权，请重新登录');
      }
      return Promise.reject(error.response.data); // 返回后端定义的错误结构
    } else if (error.request) {
      // 请求已发出，但没有收到响应
      console.error('Network Error:', error.request);
      return Promise.reject({ message: '网络错误，请检查您的连接', code: 'NETWORK_ERROR' });
    } else {
      // 发送请求时出了点问题
      console.error('Request Error:', error.message);
      return Promise.reject({ message: error.message, code: 'REQUEST_SETUP_ERROR' });
    }
  }
);

export default apiClient; 